#当前路径
CUR_DIR = .#$(shell pwd)
#中间文件存放路径
OBJ_DIR = $(CUR_DIR)/obj
#目标文件存放路径
OUT_DIR = $(CUR_DIR)/bin
#通常项
CC = gcc
OUT = server
FLAGS = -O3 -g -lcrypt -lmysqlclient -pthread 


#源文件集合
SRC_PATH = $(CUR_DIR)/src/server

SERVER_PATH = $(CUR_DIR)/src/server

C_SRCS = $(wildcard $(addsuffix /*.c,$(SERVER_PATH)))

#中间文件集合
# notdir ：除去文件名前的地址信息
# basename ：除去后缀名
# addprefix p1 p2 ： 把p1接到p2前 
OBJS = $(addprefix $(OBJ_DIR)/,$(addsuffix .o,$(basename $(notdir $(C_SRCS)))))

#头文件集合
INC_DIR = $(CUR_DIR)/include

INC = $(addprefix -I,$(INC_DIR))

#源文件搜索路径集合

C_DIR = $(SERVER_PATH)

#搜索路径
vpath
vpath %.c $(C_DIR)
vpath %.h $(INC_DIR)
vpath %.o $(OBJ_DIR)

ALL:$(OUT)

$(OUT):$(notdir $(OBJS))
	$(CC) $(OBJ_DIR)/*.o $(FLAGS) $(INC) -o $(OUT_DIR)/$(OUT) 

%.o:%.c
	@cc $< -g $(INC) -c -o $(OBJ_DIR)/$@ 

.PHONY:clean rebuild
clean:
	rm -f $(OUT) $(OBJ_DIR)/*.o
rebuild:clean ALL